import {
	defineStore
} from 'pinia'
import {
	WxApi
} from '../../api/wx';
import wx from 'weixin-js-sdk'

import {
	extractFileType
} from '../../utils/util';
import {
	WX_APPID
} from '../../_env';
import {
	useAuthStore
} from './auth';
export const useAuth = useAuthStore
export const useWx = defineStore('useWx', {
	state: () => ({
		// 是否成功注入
		isInject: false,
		localIds: [],
		index: 0,
		arr: [],
		iosUrl: '',
	}),
	actions: {
		setIosUrl() {
			if (uni.getSystemInfoSync().platform === 'ios') {
				if (!this.iosUrl && !(useAuth().isLogin)) {
					this.iosUrl = window.location.href
				}
			} else {

			}
		},
		injectSdk: async function(cb) {
			const the = this;
			try {
				// if (this.isInject) {
				// 	cb && cb()
				// 	return
				// }
				console.log(this.iosUrl, 'iosUrl');
				const res = await WxApi.getSDKSign(this.iosUrl || window.location.href)
				console.log(res);
				if (res?.data) {
					const {
						timestamp,
						nonceStr,
						signature
					} = res.data
					wx.config({
						debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
						appId: WX_APPID, // 必填，公众号的唯一标识
						timestamp, // 必填，生成签名的时间戳˝
						nonceStr, // 必填，生成签名的随机串
						signature, // 必填，签名
						jsApiList: ['chooseImage', 'uploadImage', 'downloadImage',
							'getLocalImgData',
							'startRecord',
							'stopRecord', 'playVoice',
							'pauseVoice', 'stopVoice', 'onVoicePlayEnd', 'uploadVoice',
							'scanQRCode',
							'translateVoice', 'onVoiceRecordEnd', 'onVoicePlayEnd'
						] // 必填，需要使用的JS接口列表
					})
					wx.error((err) => {
						the.isInject = false
						// uni.showToast({
						// 	title: JSON.stringify(err),

						// })
						console.error(` 微信config: ${JSON.stringify(err)}`);

					})
					wx.ready(() => {
						cb && cb()
						the.isInject = true

					})
				}



			} catch (err) {
				uni.showModal({
					title: '提示',
					showCancel: false,
					content: `${err}\n录音、附件上传功能无法使用`
				})
				console.error(err);
			}
		},

		wxHandle() {
			return wx
		},
		scanCode(cb) {
			wx.scanQRCode({
				needResult: 1,
				scanType: ["qrCode", "barCode"],
				success: function(res) {
					var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果

					cb && cb(result)
				},
				fail(res) {
					console.log(res, 'scanQRCode---err');
				}
			})
		},

		syncUpload(localIds, cb) {
			let the = this;
			var localId = localIds.pop();
			wx.getLocalImgData({
				localId: localId, // 图片的localID
				success: function(res) {
					let localData = res.localData;
					if (localData.indexOf('data:image') != 0) {
						localData = 'data:image/jpeg;base64,' + localData;
					}
					localData = localData.replace(/\r|\n/g, '').replace(
						'data:image/jgp',
						'data:image/jpeg');
					const suffix = extractFileType(localData);
					the.arr.push({
						base64: localData,
						type: 'image',
						name: `${Date.now()}.${suffix}`,
						suffix: suffix,
						// 是否是本地文件
						isLocal: true,

					})

					if (localIds.length > 0) {
						the.syncUpload(localIds, cb)
					} else {
						cb(the.arr)
					}
				},
				fail: function(res) {
					alert('选择图片失败:' + res.errMsg);
				},
			});


		},
		chooseImage(cb) {
			const the = this;
			the.arr = []
			wx.chooseImage({
				count: 9, // 默认9
				sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
				sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
				success: function(res) {
					the.syncUpload(res.localIds, cb)
				}
			});
		}

	},
	persist: false,
})